#pragma once
#include <GameLogic/PlayerColor.h>

namespace catan
{
	class BoardLogic;
	class DxBoardDisplay;
	class BoardDisplayBase;

	class Helper
	{
	public:
		Helper(void){};
		~Helper(void){}
		irr::IrrlichtDevice* GetDevice() {return mDevice;}
		void SetDevice(irr::IrrlichtDevice* d){ mDevice = d;}

		PlayerColor::Enum GetHostColor() { return mHostColor; }
		void SetHostColor(PlayerColor::Enum val) { mHostColor = val; }

		Handle<Board> GetBoard() const;

		BoardLogic* GetBoardLogic() const { return mBoardLogic; }
		void SetBoardLogic(BoardLogic* val) { mBoardLogic = val; }

		int GetBoardId() const;
		
		scene::ISceneNode* GetBoardNode();
		scene::ISceneManager* GetSceneManager();

		DxBoardDisplay* GetDxBoardDisplay() { return mDxBoardDisplay; }
		void SetDxBoardDisplay(DxBoardDisplay* val) { mDxBoardDisplay = val; }
		
		BoardDisplayBase* GetUiController() const { return mUiController; }
		void SetUiController(BoardDisplayBase* val) { mUiController = val; }

		ISceneNode* AddAnimatioMeshNode(const tstring& filename, ISceneNode* parent = 0, s32 id = -1, IAnimatedMesh** retMesh = 0);
		gui::IGUIElement* GetGUIElement(s32 id);
	protected:
		irr::IrrlichtDevice* mDevice;
		PlayerColor::Enum mHostColor;
		BoardLogic* mBoardLogic;
		DxBoardDisplay* mDxBoardDisplay;
		BoardDisplayBase* mUiController;
		
	};

/*	extern Helper mHelper;*/
}

